The storage and retrieval of knowledge in a definable fashion usually falls into one of two categories; namely: conventional algorithms and symbolic knowledge. Conventional algorithms typically express knowledge in a manner in which a certain set of inputs and states will always produce the same outputs utilizing an explicit step-by-step procedural algorithm. Symbolic knowledge, however, is used to describe situation where several pieces of data are given along with definable knowledge which must be used to find an answer. Unlike conventional knowledge, there is no algorithmic way to use the knowledge, only "rules of thumb" to determine which knowledge is pertinent given the current data. This is the essence of an expert system in that; much knowledge exists, but only some portions of the knowledge are useful at any point in solving the problem. An expert system typically uses an inference engine to decide which action to take next until the problem is solved.
Knowledge can be represented in many ways including classification, rules, and inheritance. In real-time applications, however, rules are typically the only representation of knowledge which can be utilized in a timely fashion, especially in the case where a system is data-driven. A data-driven system is one in which the data decides which action to take as opposed to a goal-driven system in which a goal is the basis for all actions.
A rule-based expert system is easily recognizable by the fact that all knowledge is contained in IF-THEN-ELSE rules, where the IF condition is evaluated with respect to its truth value, and the corresponding THEN-ELSE assertion is carried out. A rule-based expert system usually includes three main parts: namely: a knowledge base containing the rules, a data base containing values and timetags of all pertinent data, and an inference engine which acts on the data based on the rules. The inference engine uses a strategy composed of several heuristics, or "rules of thumb", in order to narrow down a multitude of rules to a few pertinent rules.
The process of applying knowledge typically involves three steps in a rule-based system. First, all rules are evaluated as to their capability to be used with respect to the status of the data comprising the rule. Second, out of the available set of applicable rules, one rule is chosen using the set of heuristics. Third, that rule is then executed typically updating the data base, but possibly changing the rule base as well. This procedure is repeated until there is no new information to apply or a solution has been reached.
Rule-based expert system are often desired for real-time systems for several reasons. First, rules are a simple form of knowledge which are easy to formulate based on the user's experience. Second, real-time applications often demand a simpler rule-based approach since object-oriented expert system applications typically stretch beyond the limits of timely solutions. Third, the rule-base approach is best suited to the data-driven problems typically encountered in real-time applications.
However, most expert systems have several shortcomings. The user interfaces are tightly coupled to the run-time code, resulting in significant and often specialized computing resources. Conventional expert systems cannot enforce hard deadlines and do not explicitly propagate time synchronization information. Expert systems do not typically have any form of simulation capability. Furthermore, existing expert systems do not usually allow for integration with advanced analytical algorithms while maintaining real-time operation.